package main

import (
	"fmt"
	"strings"
)

//我的
//func convert(s string, numRows int) string {
//	if len(s) <= numRows || numRows == 1 {
//		return s
//	}
//	strings := make([]string, numRows)
//	for i := 0; i < numRows; i++ {
//		strings[i] = ""
//	}
//	liexu, direction := 0, 0
//	for a := 0; a < len(s); a++ {
//		if direction == 0 {
//			if liexu < numRows-1 {
//				strings[liexu] = strings[liexu] + string(s[a])
//				liexu++
//				continue
//			} else if liexu == numRows-1 {
//				direction++
//				strings[liexu] = strings[liexu] + string(s[a])
//				liexu--
//				continue
//			}
//		} else if direction == 1 {
//			if liexu > 0 {
//				strings[liexu] = strings[liexu] + string(s[a])
//				liexu--
//				continue
//			} else if liexu == 0 {
//				direction--
//				strings[liexu] = strings[liexu] + string(s[a])
//				liexu++
//
//			}
//		}
//
//	}
//
//	//拼接n个 字符串 成一个
//	for i := 1; i < numRows; i++ {
//		strings[0] = strings[0] + string(strings[i])
//	}
//	return strings[0]
//}

// GPT的
func convert(s string, numRows int) string {
	if len(s) <= numRows || numRows == 1 {
		return s
	}
	stringsArr := make([]strings.Builder, numRows)

	// 方向控制变量
	increment := 1
	liexu := 0

	for i := 0; i < len(s); i++ {
		stringsArr[liexu].WriteByte(s[i])

		// 修改方向
		if liexu == 0 {
			increment = 1
		} else if liexu == numRows-1 {
			increment = -1
		}
		liexu += increment
	}

	// 拼接所有字符串
	var result strings.Builder
	for _, builder := range stringsArr {
		result.WriteString(builder.String())
	}

	return result.String()
}

func main() {
	fmt.Println("PAHNAPLSIIGYIR", convert("PAYPALISHIRING", 3))
	fmt.Println("PINALSIGYAHRPI", convert("PAYPALISHIRING", 4))
	fmt.Println("A", convert("A", 1))

}
